算子 CoFCamera

Operator Library: Hardware Platform

该运算符表示光纤上的 CXP 之间的图像数据接口( CoF )摄像头以每条光纤通道 25 Gbit/s 的速度运行, VisualApplets该操作器可用于四通道CoF 配置,例如 100 Gbit/s。接口拓扑由FiberConnection参数选择,操作员可以选择连接到 QSFP28 端口 [0] 或 QSFP28 端口 [1]。无论摄像机输出何种格式,操作员都会输出原始图像数据。然后,您需要将此图像数据转换为摄像机发送的格式。要转换图像数据,请使用相应的运算符将原始字节值聚合并转换为像素值。操作期间的某些情况可以通过事件系统进行通信,如下所述。此外,操作员还可以使用各种参数来指示与摄像机的连接状态。

适用于硬件平台
imaFlex 2 Dual 100

在 VisualApplets 中实例化

该算子在其输出端口 O 上提供图像数据。该输出始终存在。除此标准输出端口外,您还可以为 CXP 标头元数据配置一个可选的 MetaDataO 输出。在算子实例化期间,将显示以下弹出对话框:

在此处,您可以指定可选的元数据端口。如果您将端口可用性设置为“0”(默认值),则算子中将不存在该端口。如果您将端口可用性设置为 1,则元数据端口将在算子接口中可用。

可选的 MetaDataO 端口

MetaDataO被组织成一个 10x1 的内核链接,由 10 个 24 位组件组成。输出格式如下图所示。

每个 CXP 帧都提供一个对应的图像头。压缩后的图像头由 10 个不同的值组成,这些值介于 8 位到 24 位之间。操作员将这 10 个值作为一个内核值(10x1)提供,每个分量都填充到 24 位。

图像头字段 核指数 Bit Width [少量] 描述
StreamId 0 8 CXP 流的 ID
Tag 1 16 源图像索引。每次传输图像时,索引都会递增,并在 0xFFFF 处循环回到 0。对于包含与同一图像相关的数据的每个数据流(在多抽头数据流的情况下),应使用相同的索引号。
XSize 2 24 该值表示图像宽度,单位为像素。
XOff 3 24 该值表示图像相对于完整设备图像左侧像素的水平偏移量(以像素为单位)。
YSize 4 24 该值表示图像高度(以像素为单位)。对于线扫描图像,该值设置为 0。
YOff 5 24 该值表示图像相对于完整设备图像顶线的垂直偏移量(以像素为单位)。对于线扫描图像,该值设置为 0。
DSizeL 6 24 该值表示每行图像中 32 位数据字的数量。
PixelF 7 16 该值表示像素格式。
TapG 8 16 该值代表水龙头几何形状。
Flags 9 8 图像标志。

设备资源使用情况

运营商根据参数FiberConnection的选择,使用 4 个Port[0] CoF通道资源或 4 个Port[1] CoF通道资源。该资源代表 QSFP28 连接器中的物理光纤通道,位于端口 [0] 或端口 [1] 上。分配的通道将专门用于CoF 协议。不同的协议和不同的运营商(数据转发)也可以使用 QSFP28 连接器。但是,协议的选择是针对整个 QSFP28 端口,即其内部的所有 4 个通道。您可以在AppletProperties操作符的FiberProtocol0和FiberProtocol1参数中定义协议。对于事件系统,使用EventPort类型的可配置资源。此外,还会分配一个只读资源EventID ,运行时软件使用该资源来识别和注册事件通道。

Port[n] 代表 QSFP28[n] 连接器。资源索引是所选连接器内的光纤通道。

[注意] 资源为只读

除EventPort外,所有资源均为只读。它们的值反映了映射到端口(连接器)和通道(连接器内的光纤连接)的FiberConnection参数值。

[重要] 修改图像宽度和图像高度

通过输出链接的最大图像宽度和高度属性,您可以将宽度和高度调整为相机特定的设置。但是,算子端口 O 上的最大图像宽度 必须可被端口 O 的 Parallelism 整除。因此,请确保最大图像宽度可以被端口 O 的 Parallelism 整除!

错误处理与事件系统

当操作员检测到接收到的重建帧大于或小于摄像机在 CXP 图像头中传递的帧时,相应的误差计数器参数之一将递增:

  • 如果接收到的帧的尺寸小于图像头中指定的尺寸,则FrameCorruptedCount递增。

  • 如果接收到的帧的尺寸大于图像头中指定的尺寸,则FrameOversizedCount会递增。

For a set of very critical errors, the operator will forward asynchronous events to the host runtime software (Framegrabber SDK). Events can be caused by corrupted frames or CRC errors. The event name in the Framegrabber API is <hierarchical operator name>\CxpStreamStatus, e.g. Device1\Process0\Camera\CxpStreamStatus. The event payload is provided as four 16-bit data words. The event format is defined as follows:

  • 字 [0]:

    • 位 [0:15]:事件发生的 CXP 图像标签。

  • word [1]:

    • 位 [0:7]:保留位,没有定义功能。您可以忽略它们的值。

    • 比特 [8:15]:事件发生的流 ID。

  • word [2]:

    • 位[0]:发生 CRC 错误。

    • 位 [1:15]:保留位,未定义功能。您可以忽略它们的值。

  • word [3]:

    • 位[0]:保留位,未定义功能。您可以忽略其值。

    • 位 [1]:发生事件丢失。这意味着之前的事件已丢失。当运行时软件未对事件做出响应且内部事件队列溢出时,就会发生这种情况。

    • 位 [2:15]:保留位,未定义功能。您可以忽略其值。

每个错误事件都会触发运行时软件的中断。为了减少中断次数,可以将具有相同帧标签的多个事件合并。合并事件时,它们的错误标志也会合并。

如果某个事件丢失,其前一个事件将包含有关丢失事件的信息。该前一个事件不能与任何共享相同帧标签的后续事件合并。

由 CRC 错误引起的事件包含一个帧标签,但该标签可能并不总是对应于发生 CRC 错误的确切帧。在某些情况下,该标签可能指向前一帧或后一帧。

当摄像机发送的 CXP 数据包跨越两个或多个帧之间的转换时,就会出现这种情况。CRC 校验在数据包末尾完成,而流数据则是实时重建的。因此,CRC 错误可能在前一帧已被操作员发送之后才被检测到。

在正常情况下(即摄像机数据包不包含一帧的结尾和下一帧的开头),CRC 错误期间报告的帧标签将始终是正确的。

在其他情况下,如果完整的帧流数据小于最大数据包大小,则单个数据包内可能会出现帧重叠。在这种情况下,软件应用程序应将前一帧(帧标签 - 1)和后一帧(帧标签 + 1)也视为可能已损坏。

I/O Properties

财产 值
操作员类型 M
输出链接 O,图像数据输出
MetaDataO,可选元数据输出

Supported Link Format

链接参数 输出链路 O 输出 Link MetaDataO
Bit Width 8 24
Arithmetic 未签名 未签名
Parallelism 48 1
内核列 1 10
内核行 1 1
图像协议 {VALT_IMAGE2D, VALT_LINE1D} (default: VALT_IMAGE2D) {VALT_IMAGE2D, VALT_LINE1D, VALT_PIXEL0D} (default: VALT_IMAGE2D)
Color Format VAF_GRAY VAF_GRAY
颜色口味 FL_NONE FL_NONE
Max. Img Width 任意(默认值:1056) 1
Max. Img Height 任意(默认值:1056) 1

参数

FiberConnection
键入 Static Write 参数
默认 port_0_lane_0_1_2_3
范围 {port_0_lane_0_1_2_3, port_1_lane_0_1_2_3}

参数FiberConnection定义了摄像机连接到哪个 QSFP28 端口以及摄像机操作员正在使用该端口的哪些通道。

目前,端口 0 和端口 1 仅支持 4 通道的摄像机配置。只有当AppletProperties操作符中该端口的FiberProtocol参数设置为CoF而不是DataForwarding时,才能使用选定的 QSFP28 端口。

如果FiberProtocol参数设置为DataForwarding ,并且CoFCamera操作符尝试映射到该光纤端口,则设计规则检查 (DRC) 将生成错误消息。在这种情况下, FiberConnection参数将被标记为冲突(红色),将鼠标悬停在其上将显示一条快速提示帮助消息,解释冲突原因。

同一通道上的同一个硬件 QSFP28 端口只能由一个CoFCamera操作员使用。多个操作员之间的映射关系在整个设计中必须是唯一的。

最大数据包大小
键入 Static Write 参数
默认 _16384
范围 {_16384, _8192}

参数MaxPacketSize定义了所连接摄像机的最大流数据包大小(以字节为单位),该大小符合 CXP 标准的规定。摄像机将发送小于或等于此限制的流数据包。

此参数会影响 FPGA 块 RAM 资源的使用情况:值越小,使用的块 RAM 资源越少。例如(4 通道):值_16384使用 64 个块 RAM 资源;值_8192使用 32 个块 RAM 资源。

注入错误
键入 动态写参数
默认 PacketTagError
范围 {数据包标签错误、图像标签错误、已纠正错误、数据包缓冲区溢出、CRC错误、帧损坏、帧过大、意外启动数据}

参数InjectError用于注入错误以进行测试。注入的错误会递增相应的错误计数参数。

根据错误类型,注入操作也可能导致软件中断事件。有关错误语义的详细信息,请参阅相关参数的说明。

UsedConnections
键入 动态读参数
默认 4
范围 [1 : 4]

此参数目前未使用,仅为将来添加功能而保留。

PacketTagErrorCount
键入 动态读参数
默认 0
范围 [0 : 4095]

参数PacketTagErrorCount用于统计接收到的数据包中,标签与 CXP 标准预期标签不符的数据包数量。该值统计连续数据包流标签枚举中出现间隙的情况。它是一个 12 位计数器。

  • 位 [10:0]表示实际的计数器值。

  • 位[11]表示计数器溢出。

当溢出位被设置时,计数器值将被视为无关紧要,即已发生超过 2047 次错误情况。

ImageTagErrorCount
键入 动态读参数
默认 0
范围 [0 : 4095]

此参数统计图像头标签、符合 CXP 标准的预期标签和接收到的标签之间不匹配的次数。它是一个 12 位计数器:

  • 位 [10:0]表示实际计数。

  • 位[11]指示溢出。

如果溢出位已设置,则计数器值无效,应忽略,这意味着已发生超过 2047 次错误情况。

CorrectedErrorCount
键入 动态读参数
默认 0
范围 [0 : 4095]

此参数显示已成功纠正的图像头或行标记中检测到的错误数量。它是一个 12 位计数器:

  • 位 [10:0]表示实际计数。

  • 位[11]指示溢出。

如果溢出位已设置,则计数器值无效,应忽略,这意味着已发生超过 2047 次错误情况。

PacketBufferOverflowCount
键入 动态读参数
默认 0
范围 [0 : 4095]

此参数用于监控通道绑定数据包缓冲区溢出情况。由于 CXP 协议,溢出仅在使用多条光纤通道的配置中才会发生。它是一个 12 位计数器:

  • 位 [10:0]表示实际计数。

  • 位[11]指示溢出。

如果溢出位已设置,则计数器值无效,应忽略,这意味着已发生超过 2047 次错误情况。

PacketBufferOverflowSource
键入 动态读参数
默认 0
范围 [0x0 : 0xF]

此参数实现一个位掩码,用于查询数据包缓冲区溢出发生在四个 CXP 通道(即光纤通道)中的哪一个通道。顺序:

  • LSB = 运营商分配的最低 CXP 通道号。

  • MSB = 运营商分配的最高 CXP 通道号。

CameraScanMode
键入 动态读参数
默认 面积
范围 面积,线

接收到的图像头指示该数据流是用于面扫描还是线扫描应用。此参数显示最近接收到的数据流图像头信息。

意外的启动数据计数
键入 动态读参数
默认 0
范围 [0 : 4095]

此参数用于检测操作员重置后第一个数据值异常的错误情况,因为事先未收到图像头。它报告处理开始时异常字节数。这是一个 12 位计数器:

  • 位 [10:0]表示实际计数。

  • 位[11]指示溢出。

如果溢出位已设置,则计数器值无效,应忽略,这意味着已发生超过 2047 次错误情况。

意外的启动数据可能是由于相机、图像采集卡固件的实现错误,或是软件对发现过程的控制不当造成的。相机、光纤模块或光纤电缆的硬件缺陷也可能导致这种情况。

FrameCorruptedCount
键入 动态读参数
默认 0
范围 [0 : 4095]

此参数统计采集过程中损坏的帧数。损坏的帧包含发送到目标设备的错误像素。 VisualApplets 流水线。它是一个 12 位计数器:

  • 位 [10:0]表示实际计数。

  • 位[11]指示溢出。

如果溢出位已设置,则计数器值无效,应忽略,这意味着已发生超过 2047 次错误情况。

帧超大计数
键入 动态读参数
默认 0
范围 [0 : 4095]

此参数用于统计采集过程中检测到的超大帧的数量。超大帧是指包含的行数或像素数超过图像头中指定值的帧。此类错误可能是由于硬件缺陷导致的传输问题,也可能是相机固件错误造成的。这是一个 12 位计数器。

  • 位 [10:0]表示实际计数。

  • 位[11]指示溢出。

如果溢出位已设置,则计数器值无效,应忽略,这意味着已发生超过 2047 次错误情况。

CrcErrorCount
键入 动态读参数
默认 0
范围 [0 : 4095]

此参数用于统计 CXP 流数据包中 CRC 错误出现的次数。它是一个 12 位计数器:

  • 位 [10:0]表示实际计数。

  • 位[11]指示溢出。

如果溢出位已设置,则计数器值无效,应忽略,这意味着已发生超过 2047 次错误情况。